#include "PajaritoRojo.h"

using namespace TP::Juego::Arena::Actores;

PajaritoRojo::PajaritoRojo() : Pajarito(PAJARITOROJO) {
	this->setVida(vida_pajaro_rojo);
}

PajaritoRojo::PajaritoRojo(const string& pNombre) : Pajarito(pNombre) {
	this->setVida(vida_pajaro_rojo);
}

PajaritoRojo::~PajaritoRojo() { }

int PajaritoRojo::getPuntaje() {
	return puntaje_pajaro_rojo;
}

TiXmlElement* PajaritoRojo::aElementoXML() {
	TiXmlElement * element = new TiXmlElement(PAJARITOROJO);

	element->SetAttribute("nombre", this->Nombre().c_str());
	element->SetDoubleAttribute("vida", this->getVida());

	if (NULL == this->getTrayectoria())
		element->LinkEndChild(new TiXmlElement("NULL"));
	else
		element->LinkEndChild(this->getTrayectoria()->aElementoXML());

	return element;

	return element;
}

void PajaritoRojo::deElementoXML(TiXmlElement* pElemento) {
	double tmp;
	if (strcmp(pElemento->Value(), PAJARITOROJO) == 0) {
		this->setNombre(pElemento->Attribute("nombre"));
		pElemento->Attribute("vida", &tmp);
		this->setVida(tmp);
		Trayectoria* trayectoria = new Trayectoria();
		trayectoria->deElementoXML(pElemento->FirstChildElement());
		this->setTrayectoria(trayectoria);
	}
}

double PajaritoRojo::getAlturaRebote() const {
	return rebote_pajaro_rojo;
}

double PajaritoRojo::getRadio() {
	return radio_pajaro_rojo;
}

// Retorna los puntos del actor por ser destruido.
int PajaritoRojo::getPuntosDestruccion() {
	return puntaje_pajaro_rojo;
}

// Retorna el daño que le hace el actor a un cerdito.
double PajaritoRojo::getDanioContraCerdito() {
	return danio_pajaro_rojo_cerdito;
}

// Retorna el daño que le hace el actor a una superficie.
double PajaritoRojo::getDanioContraSuperficie() {
	return danio_pajaro_rojo_superficies;
}

// Retorna el daño que le hace el actor a un pajarito.
double PajaritoRojo::getDanioContraPajarito() {
	return 0;
}